<?php
//一.时间
//1.修改时区
//在 PHP 中设置时区的方法有三种，这边只介绍代码里修改的方式：
echo "1.设置时区";
echo date("Y-m-d H:i:s"); // 输出？
echo "<br />";
date_default_timezone_set("PRC");
echo date("Y-m-d H:i:s"); // 输出？

//2.时间戳time()
//time() 函数返回自 Unix 纪元（January 1 1970 00:00:00 GMT）起的当前时间的秒数。
//返回当前时间的 Unix 时间戳，并格式化为日期：
echo "<br />"."2.时间戳time()";
$t=time();
echo($t . "<br>");
echo(date("Y-m-d",$t));

//3.时间格式化函数date()
//date() 函数可把时间戳格式化为可读性更好的日期和时间。
//可以在字母之间插入其他字符，比如 "/"、"." 或者 "-"，这样就可以增加附加格式了：
echo "<br />"."3.时间格式化函数date()";
echo date("Y/m/d") . "<br>"; // 输出？
echo date("Y.m.d") . "<br>"; // 输出？
echo date("Y-m-d"); // 输出？

//4.字符串转时间戳函数strtotime()
//strtotime() 函数将任何字符串的日期时间描述解析为 Unix 时间戳（自 January 1 1970 00:00:00 GMT 起的秒数）。
//time 必需。规定日期/时间字符串。
//now 可选。规定用来计算返回值的时间戳。如果省略该参数，则使用当前时间。
//将任何字符串的日期时间描述解析为 Unix 时间戳：
echo "<br />"."4.字符串转时间戳函数strtotime()";
// 设置时区
date_default_timezone_set("PRC");
$time = strtotime("2021-09-01 00:00:00");  // 将指定日期转成时间戳
// 打印当前时间  PHP_EOL 换行符，兼容不同系统
echo  $time, PHP_EOL;
// 更多实例
echo strtotime("now"), PHP_EOL;
echo strtotime("now"), PHP_EOL;
echo strtotime("10 September 2000"), PHP_EOL;
echo strtotime("+1 day"), PHP_EOL;
echo strtotime("+1 week"), PHP_EOL;
echo strtotime("+1 week 2 days 4 hours 2 seconds"), PHP_EOL;
echo strtotime("next Thursday"), PHP_EOL;
echo strtotime("last Monday"), PHP_EOL;

//5.获取日期信息getdate()
//getdate() 函数返回某个时间戳或者当前本地的日期/时间的日期/时间信息。
//返回当前本地的日期/时间的日期/时间信息：
echo "<br />"."5.获取日期信息getdate()";
echo "<pre>";
print_r(getdate());
echo "</pre>";

//6.获取微秒microtime()
//microtime() 函数返回当前 Unix 时间戳的微秒数。
//返回当前 Unix 时间戳的微秒数：
echo "<br />"."6.获取微秒microtime()";
echo(microtime());

//示例，获取微秒的函数经常用来计算时间的执行时间：
echo "<br />";
echo microtime(true);
echo "<br />";
$i = 1;
while ($i < 10000) {
    $i++;
}
echo microtime(true);

//二.数学
//1.生成随机整数mt_rand()
echo "<br />"."1.随机整数mt_rand()";
echo(mt_rand() . "<br>");
echo(mt_rand());

//示例，获取1000 ~ 9999的随机数：
echo "<br />";
echo mt_rand(1000, 9999);

//获取一个随机id：
echo "<br />";
echo date("YmdHis").mt_rand(1000, 9999);

//2.向上取整ceil()
//ceil() 函数向上舍入为最接近的整数。
echo "<br />"."2.向上取整ceil()";
//向上舍入为最接近的整数：
echo(ceil(0.60) . "<br>");
echo(ceil(0.40) . "<br>");
echo(ceil(5) . "<br>");
echo(ceil(5.1) . "<br>");
echo(ceil(-5.1) . "<br>");
echo(ceil(-5.9));

//3.向下取整floor()
//floor() 函数向下舍入为最接近的整数。
echo "<br />"."3.向下取整floor()";
//向下舍入为最接近的整数：
echo(floor(0.60) . "<br>");
echo(floor(0.40) . "<br>");
echo(floor(5) . "<br>");
echo(floor(5.1) . "<br>");
echo(floor(-5.1) . "<br>");
echo(floor(-5.9));

//4.获取绝对值abs()
//abs() 函数返回一个数的绝对值。
echo "<br />"."4.获取绝对值abs()";
//返回不同数的绝对值：
echo(abs(6.7) . "<br>");
echo(abs(-6.7) . "<br>");
echo(abs(-3) . "<br>");
echo(abs(3));

//5.获取最小值min()
echo "<br />"."5.获取最小值min()";
//通过 min() 函数查找最小值：
echo(min(2,4,6,8,10) . "<br>");
echo(min(22,14,68,18,15) . "<br>");
echo(min(array(4,6,8,10)) . "<br>");
$arr1 = array(
    array(123,2323),
    array(3232,6666),
    array(44,7777),
    array(555,8888),
);
$arr2 = [
    'v1' => ['value1' => '123','value2' => '2323'],
    'v2' => ['value1' => '3232','value2' => '6666'],
    'v3' => ['value1' => '44','value2' => '7777'],
    'v4' => ['value1' => '555','value2' => '8888']
];
var_dump(min($arr1));

//6.获取最大值max()
echo "<br />"."6.获取最大值max()";
//通过 max() 函数查找最大值：
echo(max(2,4,6,8,10) . "<br>");
echo(max(22,14,68,18,15) . "<br>");
echo(max(array(4,6,8,10)) . "<br>");
echo(max(array(44,16,81,12)));

//7.四舍五入round()
echo "<br />"."7.四舍五入round()";
//round() 函数对浮点数进行四舍五入。
echo(round(0.60) . "<br>");
echo(round(0.50) . "<br>");
echo(round(0.49) . "<br>");
echo(round(-4.40) . "<br>");
echo(round(-4.60));

echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";



